package com.wangyuan.demo.service.impl;

import com.wangyuan.demo.entity.Emp;
import com.wangyuan.demo.mapper.EmpMapper;
import com.wangyuan.demo.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;

import java.util.List;
import java.util.Objects;

/**
 * 员工业务逻辑层接口实现类
 @author Albert
 @date 2025-06-24 15:18:42
 @return
 */
@Service
@Transactional
public class EmpServiceImpl implements EmpService {

    @Autowired
    private EmpMapper empMapper;

    /**
     * 表单数据校验
     *
     * @param emp
     */
    public void dataCheck(Emp emp) {
        // 表单数据校验
        if (!StringUtils.hasLength(emp.getName().trim())) {
            throw new RuntimeException("员工姓名不能为空哦");
        }
        if (Objects.isNull(emp.getSalary())) {
            throw new RuntimeException("薪资不能为空哦");
        }
        if (Objects.isNull(emp.getAge())) {
            throw new RuntimeException("年龄不能为空哦");
        }
        Emp dbEmp = empMapper.findByName(emp);
        // 员工姓名唯一，不能重复添加
        if (dbEmp != null) {
            throw new RuntimeException("员工姓名已存在");
        }
    }

    /**
     * 查询所有员工
     *
     * @return List<Emp>
     */
    @Override
    public List<Emp> findAll() {
        return empMapper.findAll();
    }

    /**
     * 添加员工
     *
     * @param emp
     */
    @Override
    public void save(Emp emp) {
        dataCheck(emp);
        empMapper.save(emp);
    }

    /**
     * 删除员工
     *
     * @param id
     */
    @Override
    public void delete(Integer id) {
        empMapper.delete(id);
    }

    /**
     * 根据员工id查询员工
     *
     * @param id
     * @return Emp
     */
    @Override
    public Emp findById(Integer id) {
        return empMapper.findById(id);
    }

    /**
     * 修改员工信息
     *
     * @param emp
     */
    @Override
    public void update(Emp emp) {
        dataCheck(emp);
        empMapper.update(emp);
    }

}